﻿#define _CRT_SECURE_NO_WARNINGS

#include"myunordered_map.h"
#include"myunordered_set.h"
using namespace cr;

//void TestHT1()
//{
//	hash_bucket<int, pair<int,int>, unordered_map<int,int>::keyofT_map> hb;
//	int a[] = { 4,14,24,34,5,7,1,15,25,3 };
//	for (auto e : a)
//	{
//		hb.insert(make_pair(e, e));//临时变量具有常性
//	}
//
//	hb.insert(make_pair(13, 13));
//}

void TestHT2()
{
	unordered_map<int, int> hbmap;
	unordered_set<int> hbset;
	int a[] = { 4,14,24,34,5,7,1,15,25,3 };
	for (auto e : a)
	{
		hbmap.insert(make_pair(e, e));//临时变量具有常性
		hbset.insert(e);//临时变量具有常性
	}

	hbmap.insert(make_pair(13, 13));
	hbset.insert(13);
}

void test_map()
{
	unordered_map<string, string> dict;
	dict.insert(make_pair("sort", ""));
	dict.insert(make_pair("string", "_"));
	dict.insert(make_pair("insert", ""));
	unordered_map<string, string>::const_iterator begin = dict.cbegin();
	cout << (*begin) .first<< endl;
	for (auto& kv : dict)
	{
		//kv.first += 'x';
		kv.second += 'x';
		cout << kv.first << ":" << kv.second << endl;
	}
	cout << endl;

	string arr[] = { "香蕉", "甜瓜","苹果", "西瓜", "苹果", "西瓜", "苹果", "苹果", "西瓜", "苹果", "香蕉", "苹果", "香蕉" };
	unordered_map<string, int> count_map;
	for (auto& e : arr)
	{
		count_map[e]++;
	}

	for (auto& kv : count_map)
	{
		cout << kv.first << ":" << kv.second << endl;
	}
	cout << endl;
}

//void TestHT2()
//{
//	string arr[] = { "香蕉", "甜瓜","苹果", "西瓜", "苹果", "西瓜", "苹果", "苹果", "西瓜", "苹果", "香蕉", "苹果", "香蕉" };
//	hash_bucket<string, int> ht;
//	for (auto& e : arr)
//	{
//		//auto ret = ht.Find(e);
//		hash_Node<string, int>* ret = ht.find(e);
//		if (ret)
//		{
//			ret->_kv.second++;
//		}
//		else
//		{
//			ht.insert(make_pair(e, 1));
//		}
//	}
//
//}

int main()
{
	//TestHT1();
	test_map();
	TestHT2();

	return 0;
}